Methods and systems for status determination

ABSTRACT

Methods and systems for status determination are disclosed. A computing device may determine a status of the computing device or another computing device. The status may be based on operational data. One or more actions may be taken based on the status of the computing device or the another computing device. For example, at least one computing task may be performed based on the status.

CROSS REFERENCE TO RELATED APPLICATION

This application is a Continuation of U.S. application Ser. No.14/546,418, filed on Nov. 18, 2014, and granted as U.S. Pat. No.10,592,379 on Mar. 17, 2020, which is herein incorporated by referencein its entirety.

BACKGROUND

Current performance status determinations, for example, load balancechecks, often do not account for partial failures. A performance statusof a node with a 90% failure rate can still be considered alive oractive. Moreover, a performance status of a specific node in a system isoften determined based on the performance rate of that node alone,without considering the performance rates of other nodes in the system.These and other shortcomings are addressed in the present disclosure.

SUMMARY

It is to be understood that both the following summary and the followingdetailed description are exemplary and explanatory only and are notrestrictive, as claimed. Methods and systems for status determinationare disclosed. Operational status of a node can be considered based onoperational rates of a plurality of nodes in a system. Standards fordetermining performance status can change dynamically based on acomparison of the operational rates of a plurality of nodes in thesystem. The systems and methods provided herein allow the determinationand reporting of a device's status based on a comparison of the devicesoperational rate (e.g., failure rate, success rate) to the operationalrate of other devices. For example, nodes in a load balancing system candetermine the node's status based by comparing operational rates. Forexample, a first node can experience a 90% failure rate. Throughcommunication with other nodes, the first node can determine that othernodes are experiencing a failure rate between 0% and 10%. Relative tothe other nodes, the first node is experiencing a high failure rate.Therefore, the first node can report back to the network load balancer astatus indicating unavailability.

In an aspect, a first operational rate of a first node and a secondoperational rate of a second node can be determined and compared witheach other. An operational status (e.g., live, not live) can bedetermined based on the comparison (e.g., difference between the twooperational rates). The operational status of the first node can be sentto another node and/or load balancer.

In another aspect, operational rates can be received from a plurality ofnodes and used to determine an operational status of a first node. Forexample, the operational status of a first node can be determined basedon a difference of an operational rate of the first node and operationalrates of the plurality of nodes. The operational status of the firstnode can be sent to an internal service, remote device (e.g., loadbalancer), and/or the like.

In a further aspect, a device, such as a load balancer or node, canrequest an operational status of a first node. The operational status ofthe first node can be determined (e.g., by the first node) based on dataindicative of an operational rate (e.g., failure rate) of a second node.The operational status can be received by the device from the firstnode. The device can send a request to the first node to process a taskcan be based on the operational status.

Additional advantages will be set forth in part in the description whichfollows or may be learned by practice. The advantages will be realizedand attained by means of the elements and combinations particularlypointed out in the appended claims.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings, which are incorporated in and constitute apart of this specification, illustrate embodiments and together with thedescription, serve to explain the principles of the methods and systems:

FIG. 1 is a block diagram of an exemplary system;

FIG. 2 is a block diagram of an exemplary system in which the presentmethods and systems can operate;

FIG. 3 is a flowchart illustrating an example method;

FIG. 4 is a flowchart illustrating an example method;

FIG. 5 is a flowchart illustrating an example method; and

FIG. 6 is a block diagram illustrating an example computing device inwhich the present methods and systems can operate.

DETAILED DESCRIPTION

Before the present methods and systems are disclosed and described, itis to be understood that the methods and systems are not limited tospecific methods, specific components, or to particular implementations.It is also to be understood that the terminology used herein is for thepurpose of describing particular embodiments only and is not intended tobe limiting.

As used in the specification and the appended claims, the singular forms“a,” “an,” and “the” include plural referents unless the context clearlydictates otherwise. Ranges may be expressed herein as from “about” oneparticular value, and/or to “about” another particular value. When sucha range is expressed, another embodiment includes from the oneparticular value and/or to the other particular value. Similarly, whenvalues are expressed as approximations, by use of the antecedent“about,” it will be understood that the particular value forms anotherembodiment. It will be further understood that the endpoints of each ofthe ranges are significant both in relation to the other endpoint, andindependently of the other endpoint.

“Optional” or “optionally” means that the subsequently described eventor circumstance may or may not occur, and that the description includesinstances where said event or circumstance occurs and instances where itdoes not.

Throughout the description and claims of this specification, the word“comprise” and variations of the word, such as “comprising” and“comprises,” means “including but not limited to,” and is not intendedto exclude, for example, other components, integers or steps.“Exemplary” means “an example of” and is not intended to convey anindication of a preferred or ideal embodiment. “Such as” is not used ina restrictive sense, but for explanatory purposes.

Disclosed are components that can be used to perform the disclosedmethods and systems. These and other components are disclosed herein,and it is understood that when combinations, subsets, interactions,groups, etc. of these components are disclosed that while specificreference of each various individual and collective combinations andpermutation of these may not be explicitly disclosed, each isspecifically contemplated and described herein, for all methods andsystems. This applies to all aspects of this application including, butnot limited to, steps in disclosed methods. Thus, if there are a varietyof additional steps that can be performed it is understood that each ofthese additional steps can be performed with any specific embodiment orcombination of embodiments of the disclosed methods.

The present methods and systems may be understood more readily byreference to the following detailed description of preferred embodimentsand the examples included therein and to the Figures and their previousand following description.

As will be appreciated by one skilled in the art, the methods andsystems may take the form of an entirely hardware embodiment, anentirely software embodiment, or an embodiment combining software andhardware aspects. Furthermore, the methods and systems may take the formof a computer program product on a computer-readable storage mediumhaving computer-readable program instructions (e.g., computer software)embodied in the storage medium. More particularly, the present methodsand systems may take the form of web-implemented computer software. Anysuitable computer-readable storage medium may be utilized including harddisks, CD-ROMs, optical storage devices, or magnetic storage devices.

Embodiments of the methods and systems are described below withreference to block diagrams and flowchart illustrations of methods,systems, apparatuses and computer program products. It will beunderstood that each block of the block diagrams and flowchartillustrations, and combinations of blocks in the block diagrams andflowchart illustrations, respectively, can be implemented by computerprogram instructions. These computer program instructions may be loadedto a general purpose computer, special purpose computer, or otherprogrammable data processing apparatus to produce a machine, such thatthe instructions which execute on the computer or other programmabledata processing apparatus create a means for implementing the functionsspecified in the flowchart block or blocks.

These computer program instructions may also be stored in acomputer-readable memory that can direct a computer or otherprogrammable data processing apparatus to function in a particularmanner, such that the instructions stored in the computer-readablememory produce an article of manufacture including computer-readableinstructions for implementing the function specified in the flowchartblock or blocks. The computer program instructions may also be loaded toa computer or other programmable data processing apparatus to cause aseries of operational steps to be performed on the computer or otherprogrammable apparatus to produce a computer-implemented process suchthat the instructions that execute on the computer or other programmableapparatus provide steps for implementing the functions specified in theflowchart block or blocks.

Accordingly, blocks of the block diagrams and flowchart illustrationssupport combinations of means for performing the specified functions,combinations of steps for performing the specified functions and programinstruction means for performing the specified functions. It will alsobe understood that each block of the block diagrams and flowchartillustrations, and combinations of blocks in the block diagrams andflowchart illustrations, can be implemented by special purposehardware-based computer systems that perform the specified functions orsteps, or combinations of special purpose hardware and computerinstructions.

Methods and systems for status determination are disclosed. Anoperational status of a node can be determined based on operationalrates of a plurality of nodes in a system. A comparison of theoperational rates of a plurality of nodes in a system can reveal one ormore nodes that are “more” or “less” available than other nodes in theplurality of nodes for task processing. The methods and systemsdisclosed can utilized a relative comparison of operational rates of aplurality of nodes to establish an operational status for one or more ofthe plurality of nodes. Any operational rate can be applied to thepresent disclosure along with any technique for comparing one or moreoperational rates to each other to derive an operational status. Forexample, a first operational rate of a first node and a secondoperational rate of a second node can be determined. A differencebetween the second operational rate and the first operational rate canbe determined. An operational status of the first node and/or the secondnode can be provided based on the difference.

FIG. 1 illustrates a block diagram of an example system 100 fordetermining operational statuses of nodes and performing load balancingaccording to the operational statuses. In an aspect, the system cancomprise a plurality of nodes (e.g., node 102 a, 102 b, 102 c). As anexample, a node can comprise a server, a switch, a router, a bridge, arepeater, a communication gateway, a session border controller, aboundary device, a network interface, customer premises equipment (CPE),a headend, a cable modem termination system (CMTS) or any network deviceor system. The plurality of nodes (e.g., the nodes 102 a, 102 b, 102 c)can be configured for receiving, processing, and/or forwardinginformation over a network or system. The plurality of nodes cancommunicate with each other. In an aspect, one or more of the pluralityof nodes (e.g., the node 102 a) can receive operation information (e.g.,operational rates) associated with the remaining nodes of the pluralityof nodes (e.g., the node 102 b, the node 102 c). In another aspect, oneor more of the plurality of nodes can determine its operational statusby processing (e.g., comparing) its operation information (e.g.,operational rate) with the operation information (e.g., operationalrate) of at least one of the remaining plurality of nodes. For example,operational rates can comprise a rate of failing to fulfill requests, aCPU utilization rate, an average response time, transactions per second,a RAM utilization rate, disk space, total communication sessions inprocessing, a failure rate (e.g., rate for failing to fulfill requests),an error rate (e.g., Layer 2 error rate, Layer 3 error rate), acombination thereof, and the like. Other operational rates can beincluded according to a specific network or system. As another example,the operational status can comprise active or inactive, or available ornot available.

In an aspect, the system 100 can comprise a computing device 104. Thecomputing device 104 can comprise a network device and/or systemconfigured for communicating with one or more of the plurality of nodesand/or one or more other network devices. In an aspect, the computingdevice 104 can be configured to request operation information (e.g.,operational rates) from one or more of the plurality of nodes (e.g., thenodes 102 a, 102 b, 102 c). In an aspect, the computing device 104 canbe configured to determine an operational status (e.g., active,inactive) of one or more of the plurality of nodes based on theoperation information (e.g., operational rates) of the one or more ofthe plurality of nodes.

In an aspect, the computing device 104 can comprise a load balancer. Thecomputing device 104 (e.g., a load balancer) can transmit a request(e.g., an operational status check) to a node (e.g., the node 102 a).The node (e.g., the node 102 a) can request operational rates of one ormore peer nodes (e.g., the node 102 b, the node 102 c). The node 102 acan determine its operational status based on a difference of itsoperational rate and the operational rates of the one or more peer nodes(e.g., the node 102 b, the node 102 c). The node 102 a can provide itsoperational status to the computing device 104 (e.g., the loadbalancer). The computing device 104 can provide the operational statusof the node 102 a to a task assignment system. Based on the operationalstatus of the node 102 a, the task assignment system can transmit arequest to the node 102 a to fulfill a task (e.g., routing a datablock). The request can be processed at the node 102 a. In anotheraspect, the task assignment system can transmit a request to anothernode to fulfill the task in the event the operational status of the node102 a is unsuitable for the task.

In an aspect, the communications between components of the system 100can comprise a private and/or public network, such as the Internet, alocal area (LAN) network, metropolitan area network (MAN), a wide areanetwork (WAN), a public land mobile network (PLMN), a public switchedtelephone network (PSTN), a wireless distribution network, a wired orcable distribution network, a coaxial cable distribution network, anultra-high frequency (UHF) or very high frequency (VHF) radio frequencynetwork, a satellite or other extra-terrestrial network, a cellulardistribution network, a power-line broadcast network, a fiber opticnetwork, or any combinations of these systems and/or networks. In anaspect, the computing device 104 and one or more of the plurality ofnodes (e.g., the node 102 a, the node 102 b, the node 102 c) can beimplemented as separate network entities or reside in a common location.In the latter case, the communication in the common location can beperformed by way of internal functionality.

In an aspect, the communications between components (e.g., the computingdevice 104, the node 102 a, the node 102 b, the node 102 c) of thesystem 100 can utilize one or more of hypertext transfer protocol(HTTP), Transmission Control Protocol (TCP), Internet Protocol (IP),File Transfer Protocol (FTP), Telnet, Hypertext Transfer Protocol Secure(HTTPS), Session Initiation Protocol (SIP), Simple Object AccessProtocol (SOAP), Extensible Mark-up Language (XML) and variationsthereof, Simple Mail Transfer Protocol (SMTP), Real-Time TransportProtocol (RTP), User Datagram Protocol (UDP), Global System for MobileCommunications (GSM) technologies, Code Division Multiple Access (CDMA)technologies, Evolution Data Optimized Protocol (EVDO), Internet GroupManagement Protocol (IGMP), Real Time Streaming Protocol (RTSP), TimeDivision Multiple Access (TDMA) technologies, radio frequency (RF)signaling technologies, wireless communication technologies (e.g.,Bluetooth, Wi-Fi, etc.) and other suitable communications technologies.

FIG. 2 illustrates various aspects of an exemplary environment in whichthe present methods and systems can operate. In one aspect of thedisclosure, the system can be configured to provide services such asnetwork-related services to a user device. The present disclosure isrelevant to systems and methods for providing services to a device, forexample, a user device such as a computer, tablet, mobile device,communications terminal, or the like. In an aspect, one or more networkdevices can be configured to provide various services to one or moredevices, such as devices located at or near a premises. In anotheraspect, the network devices can be configured to recognize anauthoritative device for the premises and/or a particular service orservices available at the premises. As an example, an authoritativedevice can be configured to govern or enable connectivity to a networksuch as the Internet or other remote resources, provide address and/orconfiguration services like DHCP, and/or provide naming service ordiscovery services for a premises, or a combination thereof. Thoseskilled in the art will appreciate that present methods may be used invarious types of networks and systems that employ both digital andanalog equipment. One skilled in the art will appreciate that providedherein is a functional description and that the respective functions canbe performed by software, hardware, or a combination of software andhardware.

The system 200 can comprise a plurality of nodes (e.g., a first node 102a, a second node 102 b) in communication with a computing device 104,for example, a load balancer. The computing device 104 can be disposedlocally or remotely relative to the first node 102 a and/or the secondnode 102 b. As an example, the plurality of nodes (e.g., the first node102 a, the second node 102 b) and the computing device 104 can be incommunication via a private and/or public network 105 such as theInternet or a local area network. Other forms of communications can beused such as wired and wireless telecommunication channels. As anexample, one or more of a plurality of nodes (e.g., the first node 102a, the second node 102 b) can comprise a server, a switch, a router, abridge, a repeater, a communication gateway, a session bordercontroller, a boundary device, a network interface, customer premisesequipment (CPE), a headend, a cable modem termination system (CMTS) orany network device or system capable of communicating with the computingdevice 104.

In an aspect, each of the plurality of nodes (e.g., the first node 102a, the second node 102 b) can comprise a respective communicationelement (e.g., communication element 106) for providing an interface fora user to interact with the one or more of the plurality of nodes (e.g.,the first node 102 a, the second node 102 b), and/or the computingdevice 104. The communication element 106 can be any interface forpresenting and/or receiving information to/from a user or anotherdevice. As an example, the communication element 106 can request orquery various files from a local source and/or a remote source. In anaspect, the communication element 106 can transmit data to a local orremote device such as the computing device 104. As an example, the datacan comprise operational status, operational rate, and otherinformation.

In an aspect, each of the plurality of nodes (e.g., the first node 102a, the second node 102 b) can be associated with a respective useridentifier or device identifier 108. As an example, the deviceidentifier 108 can be any identifier, token, character, string, or thelike, for differentiating one node from another node. In a furtheraspect, the device identifier 108 can identify a node as belonging to aparticular class of device. As a further example, the device identifier108 can comprise information relating to a respective node such as amanufacturer, a model or type of device, a service provider associatedwith a respective node (e.g., first node 102 a), a state of a respectivenode (e.g., the first node 102 a), a locator, and/or a label orclassifier. Other information can be represented by the deviceidentifier 108. As an example, the device identifier 108 can betransmitted if/when the first node 102 a transmits data (e.g.,operational rates, operational status) from the first node 102 a to thesecond node 102 b and/or the computing device 104.

In an aspect, the device identifier 108 can comprise an address element110. In an aspect, the address element 110 can comprise or provide aninternet protocol address, a network address, a media access control(MAC) address, an Internet address, or the like. As an example, theaddress element 110 can be relied upon to establish a communicationsession between the first node 102 a, the second node 102 b, thecomputing device 104, and/or other devices and/or networks. As a furtherexample, the address element 110 can be used as an identifier or locatorof a respective node (e.g., the first node 102 a). In an aspect, theaddress element 110 can be persistent for a particular network. As anexample, the address element 110 of the first node 102 a can betransmitted if/when the first node 102 a transmits data (e.g.,operational rates, operational status) to the second node 102 b, thecomputing device 104, and/or other network devices.

In an aspect, each of the plurality of nodes (e.g., the first node 102a, the second node 102 b) can be associated with a respective statusdetermination element (e.g., a status determination element 116associated with the first node 102 a). For example, the first node 102 acan determine an operational rate (e.g., first operational rate) of thefirst node 102 a. The first node 102 a can request operational ratesfrom a plurality of peer nodes. For example, the first node 102 a canrequest an operational rate of the second node 102 b (e.g., secondoperational rate). The status determination element 116 can beconfigured to compare the first operational rate and the secondoperational rate and determine an operational status of the first node102 a based on the comparison. Similarly, a status determination element(not shown) associated with the second node 102 b can be configured todetermine an operational status of the second node 102 b based on acomparison between the first operational rate and the second operationalrate.

In an aspect, each of the plurality of nodes (e.g., the first node 102a, the second node 102 b) can be associated with a respectiveoperational history database (e.g., an operational history database 112associated with the first node 102). As an example, an operationalhistory database can comprise operational rates and/or operationalstatus at a plurality of historical time points. For example,operational rates can comprise a rate of failing to fulfill requests, aCPU utilization rate, an average response time, transactions per second,a RAM utilization rate, disk space, total communication sessions inprocessing, a failure rate (e.g., rate for failing to fulfill requests),an error rate (e.g., Layer 2 error rate, Layer 3 error rate),combinations thereof, and the like. Other operational rates can beincluded according to a specific network or system. As another example,the operational status can comprise active or inactive, or available ornot available. In an aspect, the information stored in an operationalhistory database can be updated periodically (e.g., every minute, everyfive minutes, etc.). In an aspect, each of the plurality of nodes can beassociated with a respective operational history database. Anoperational history database can be internal or external to a respectiveplurality of nodes. In another aspect, the plurality of nodes can beassociated with the same operational history database.

In an aspect, the computing device 104 can be a server for communicatingwith the plurality of nodes (e.g., the first node 102 a, the second node102 b). As an example, the computing device 104 can communicate with theplurality of nodes (e.g., the first node 102 a, the second node 102 b)for providing data and/or services. As an example, the computing device104 can provide an operational status monitoring service, or othernetwork-related service(s). In an aspect, the computing device 104 canallow the plurality of nodes (e.g., the first node 102 a, the secondnode 102 b) to interact with remote resources such as data, devices, andfiles. As an example, the computing device 104 can be configured as (ordisposed at) a central location (e.g., a headend, or processingfacility), which can receive information (e.g., operational status,operational rates) from multiple sources (e.g., a plurality of nodes).The computing device 104 can combine the information (e.g., operationalstatus, operational rates) from the multiple sources.

In an aspect, the computing device 104 can comprise a statusdetermination element 115. As an example, the computing device 104 canreceive operational rates from a plurality of nodes (e.g., the firstnode 102 a, the second node 102 b). For example, the computing device104 can be configured to receive the first operational rate from thefirst node (e.g., the first node 102 a) and to receive the secondoperational rate from the second node (e.g., the second node 102 b). Thestatus determination element 115 can determine an operational status ofthe plurality of nodes (e.g., the first node 102 a, the second node 102b) based on a difference of one or more operational rates of theplurality of nodes. In an aspect, an operational rate of a node cancomprise a rate indicative of the operation of the node, such as asuccess rate (e.g., a rate indicative of successful operation) or afailure rate (e.g., a rate indicative of failed operation). As anexample, the operational rate (e.g., failure rate) of the first node 102a can be 90% and the operational rate (e.g., failure rate) of the secondnode 102 b can be 10%. A comparison of these values can determine thatoperational status of the first node is, for example, inactive orunavailable, whereas the operational status of the second node is, forexample, active or available.

In an aspect, the computing device 104 can comprise a task assignmentelement 117. The task assignment element 117 can determine a task toassign to the first node 102 a based on the operational status of thefirst node 102 a. For example, if the operational status of the firstnode 102 a is active or available, the task assignment element 117 canrequest that the first node 102 a fulfill a task (e.g., route a specificdata block). In an aspect, the computing device 104 can transmit therequest to fulfill the task to the first node 102 a based on the deviceidentifier 108 and/or address element 110 of the first node 102 a.

In an aspect, the computing device 104 can manage communication betweenthe first node 102 a and a database 114 for sending and receiving datatherebetween. As an example, the database 114 can store a plurality offiles (e.g., web pages), user identifiers or records, or otherinformation. As a further example, the first node 102 a can requestand/or retrieve a file from the database 114. In an aspect, the database114 can store information relating to the first node 102 a such as theaddress element 110. As an example, the computing device 104 can obtainthe device identifier 108 from the first node 102 a and retrieveinformation from the database 114 such as the address element 110. Anyinformation can be stored in and retrieved from the database 114. Forexample, the operational history database 112 can be integrated with thedatabase 114. The database 114 can be disposed remotely from thecomputing device 104 and accessed via direct or indirect connection. Thedatabase 114 can be integrated with the computing device 104 or someother device or system.

FIG. 3 is a flowchart illustrating an example method 300. At step 302, afirst operational rate of a first node can be determined. The firstoperational rate can comprise a success rate of the first nodes, afailure rate of the first node, a combination thereof, and/or the like.In an aspect, the first node (e.g., the node 102 a) can determine itsoperational rate upon receiving a request for an operational status ofthe first node from a load balancer (e.g., computing device 104). In anaspect, the first operational rate can comprise information associatedwith the first node, for example, a CPU utilization rate, an averageresponse time, transactions per second, a RAM utilization rate, diskspace, total communication sessions in processing, a failure rate (e.g.,rate for failing to fulfill requests), success rates (e.g., rate offulfilling requests), an error rate (e.g., Layer 2 error rate, Layer 3error rate), combinations thereof, and the like. Other operational ratescan be used according to a specific network or system. In an aspect,determining the first operational rate can comprise accessing anoperational history database. For example, the operational historydatabase can comprise information on the operational rates associatedwith the first nodes and associated time point. The operational historydatabase can be updated periodically (e.g., every minute, every fiveminutes, etc.) to obtain the most recent operational rates associatedwith the first node.

At step 304, a second operational rate of a second node can bedetermined. The second operational rate can comprise a success rate ofthe second node, a failure rate of the second node, a combinationthereof, and/or the like. In an aspect, the second node (e.g., the node102 b) can be a peer of the first node in a load balancing system. Thesecond operational rate can be determined at the second node. In anaspect, the second operational rate can comprise information associatedwith the second node such as a CPU utilization rate, an average responsetime, transactions per second, a RAM utilization rate, disk space, totalcommunication sessions in processing, a failure rate (e.g., rate forfailing to fulfill requests), an error rate (e.g., Layer 2 error rate,Layer 3 error rate), combinations thereof, and the like. Otheroperational rates can be used according to a specific network or system.In an aspect, determining the second operational rate can compriseaccessing an operational history database. For example, the operationalhistory database associated with the second node can store informationon the operational rates of the second nodes and associated time point.The operational history database can be updated periodically (e.g.,every minute, every five minutes, etc.) to obtain the most recentoperational rates associated with the second node.

At step 306, a difference between the first operational rate and thesecond operational rate can be determined. In an aspect, the secondoperational rate can be transmitted to the first node to facilitate thedetermination of the operational status of the first node. By way ofexample, a difference in operational rates (e.g., rate for failing tofulfill requests, success rate) between the first node and the secondnode can be determined. As a specific example, the operational rate ofthe first node can be 90% and the operational rate of the second nodecan be 10%. A comparison of these values can determine that theoperational status of the first node is, for example, inactive orunavailable, whereas the operational status of the second node is, forexample, active or available. Other techniques for determining adifference in operational status are specifically contemplated hereinand can vary based on the operational rates (or other data) consideredin the determination.

In an aspect, the operational status can be determined based on acomparison of the difference to a threshold value. For example, thedifference of the first operational rate (e.g., 90% failure rate) andthe second operational rate (e.g., 10% failure rate) can be 80%. If thethreshold value is set to be 50%, the difference can be above thethreshold value. The operational status can indicate that the first nodeis not available to receive requests. If, by contrast, the difference ofthe first operational rate (e.g., 30%) and the second operational rate(e.g., 10%) is below a threshold value (e.g., 50%), the operationalstatus can indicate that the first node is available to receiverequests.

At step 308, an operational status of the first node can be determined.For example, the operational status can be determined based on acomparison of the difference to a threshold. The threshold can be anyappropriate value, such as any number between 0 and 100 (e.g., 10, 20,30, 40, 50, 70), and/or the like. The operational status can have afirst value if the difference is less than the threshold or a secondvalue if the difference is greater than the threshold. The first valuecan be opposite the second value. The first value can be indicative ofavailability (e.g., for processing tasks). The second value can beindicative of unavailability (e.g., for processing tasks). For example,the first value can comprise a numerical value (e.g., 1), a Booleanvalue, (e.g., true), a text value (e.g., live, available, enabled,active), and/or the like. The second value can comprise a numericalvalue (e.g., 0), Boolean value (e.g., false), a text value (e.g., notlive, unavailable, disabled, inactive), and/or the like. For example,the operational status can be selected for a device, such as a loadbalancer, which is configured to recognize only the first value or thesecond value as an operational status.

At step 310, the operational status of the first node can be sent,provided, transmitted, and/or the like. In an aspect, the operationalstatus of the first node can be provided to a load balancer or anothersystem or node that requests the operational status of the first node.In an aspect, the device identifier 108 and/or the address element 110of the first node can be included if/when the operational status of thefirst node is provided to the load balancer.

At step 312, a task can be delegated to the first node based on theoperational status of the first node. In an aspect, a task can bedelegated to the first node based on the operational status of the firstnode. For example, a task assignment system or the task assignmentelement 117 associated with the load balancer (e.g., the computingdevice 104) can determine a task based on the status of the first node.A request to fulfill a task can be transmitted from the load balancer tothe first node. As an example, the request to fulfill a task cancomprise routing one or more data blocks. The request can be processedat the first node. In another aspect, the first node can be identifiedas a node that cannot receive further tasks until the operational statusof the first node changes.

FIG. 4 is a flowchart illustrating an example method 400. At step 402,operational rates can be received (e.g., at a first node) from aplurality of second nodes. The plurality of operational rates cancomprise respective success rates of the second nodes, respectivefailure rates of the second nodes, a combination thereof, and/or thelike. As an example, a plurality of second nodes (e.g., the nodes 102 a,102 b, and 102 c) can transmit respective operational rates to thecomputing device 104 (e.g., a load balancer, first node). In an aspect,the operational rates can comprise information such as a CPU utilizationrate, an average response time, transactions per second, a RAMutilization rate, disk space, total communication sessions inprocessing, a failure rate (e.g., rate for failing to fulfill requests),success rates (e.g., rate of fulfilling requests), an error rate (e.g.,Layer 2 error rate, Layer 3 error rate), combinations thereof, and/orthe like. Other operational rates can be used according to a specificnetwork or system. In an aspect, the operational rates can be accessedvia an operational history database (e.g., the operational historydatabase 112) associated with the respective plurality of second nodes.

At step 404, at least one of the plurality of operational rates can becompared (e.g., at the first node) to an operational rate of the firstnode. For example, a difference can be determined between theoperational rate of the first node and at least one of the operationalrates of the plurality of second nodes. As another example, comparing atleast one of the plurality of operational rates to the operational rateof the first node can comprise comparing the operational rate of thefirst node to an average of one or more of the operational rates of theplurality of second nodes.

At step 406, an operational status of a first node can be determined.The operational status of the first node can be determined based on thecomparison of step 404. For example, the operational status can bedetermined based on a difference, comparison, and/or the like between anoperational rate of the first node and at least one of the operationalrates of the plurality of second nodes. The operational status can bedetermined based on the difference, comparison, and/or the like betweenthe average of the one or more operational rates of the plurality ofsecond nodes and the operational rate of the first node. In an aspect,the first node (e.g., the node 102 a) can be one of the plurality ofsecond nodes (e.g., the node 102 b, the node 102 c). In another aspect,the first node can be a peer node to the one of the plurality of secondnodes (e.g., the node 102 a, the node 102 b, the node 102 c, etc.).

For example, the operational status can be determined based on acomparison of a difference (e.g., difference between the average and theoperational rate of the first node, difference between the operationalrate of the first node and at least one operational rate of the secondnodes) to a threshold (e.g., or multiple thresholds). The threshold canbe any appropriate value, such as any number between 0 and 100 (e.g.,10, 20, 30, 40, 50, 70), and/or the like. The operational status canhave a first value if the difference is less than the threshold or asecond value if the difference is greater than the threshold. The firstvalue can be opposite the second value. The first value can beindicative of availability (e.g., for processing tasks). The secondvalue can be indicative of unavailability (e.g., for processing tasks).For example, the first value can comprise a numerical value (e.g., 1), aBoolean value, (e.g., true), a text value (e.g., live, available,enabled, active), and/or the like. The second value can comprise anumerical value (e.g., 0), Boolean value (e.g., false), a text value(e.g., not live, unavailable, disabled, inactive), and/or the like. Forexample, the operational status can be selected for a device, such as aload balancer, which is configured to recognize only the first value orthe second value as an operational status.

In an aspect, the computing device 104 (e.g., the status determinationelement 115) can receive the various operational rates and can determinethe difference between the operational rate of the first node and theoperational rates of the plurality second nodes. For example, adifference in operational rates (e.g., failure rates, success rates)between the operational rate of the first node (e.g., the node 102 a)and the operational rates of the plurality of second nodes (e.g., thenode 102 b, the node 102 c) can be determined. As a specific example,the operational rate of the first node can be 90% and the operationalrates of the plurality of second nodes (e.g., the node 102 b, the node102 c) can be 10% and 30% respectively. The computing device 104 (e.g.,the status determination element 115) can determine that the operationalstatus of the first node is inactive based on a comparison of theoperational rate of the first node (e.g., 90%) with the operationalrates of the plurality of second nodes (e.g., 10%, 30%). In an aspect,the operational status can be determined based on a comparison of thedifference to a threshold value. For example, the difference of thefirst operational rate of the first node (e.g., 90% failure rate) andone or more of the operational rates of the plurality of second nodes(e.g., 10%, 30%) can be 80% and 60% respectively. If the threshold valueis set to be 50%, the difference of the first operational rate and oneor more of the plurality of second nodes would be above the thresholdvalue. In such an event, the computing device 104 (e.g., the statusdetermination element 115) can indicate that the first node is notavailable to receive requests. As another example, the difference of thefirst operational rate of the first node (e.g., 10% failure rate) andone or more of the operational rates of the plurality of second nodes(e.g., 10%, 30%) can be 0% and 20% respectively. If the threshold valueis set to be 50%, the difference of the first operational rate and theoperational rates of the plurality of second nodes would be below thethreshold value. In such an event, the computing device 104 (e.g., thestatus determination element 115) can indicate that the first node isavailable to receive requests.

In an aspect, the threshold value can be a predefined value (e.g., 50%,30%, etc.). In another aspect, the threshold value can be dynamicallydetermined. For example, the threshold value can be an average value ofthe operational rates received from the plurality of second nodes.Specifically, if the average operational rate (e.g., failure rate) ofthe plurality of second nodes is 50%, and if the operational rate (e.g.,90%) of the first node is above the average operational rate, theoperational status can indicate that the first node is not available toreceive requests. Similarly, if the average operational rate (e.g.,failure rate) is 50%, and if the operational rate (e.g., 40%) of thefirst node is below the average operational rate, the operational statuscan indicate that the first node is available to receive requests.

At step 408, the operational status of the first node can be sent,provided, transmitted and/or the like. The operational status can besent, provided, transmitted, and/or the like in response to a requestfor the operational status (e.g., from a load balancer or other node).For example, the operational status can be provided in response to astatus check (e.g., live check) from the load balancer or another node.In an aspect, the computing device 104 (e.g., a load balancer) canprovide the operational status of the first node to a task assignmentsystem. In another aspect, the operational status of the first node canbe provided to a task assignment element (e.g., the task assignmentelement 117) of the computing device 104. In an aspect, the deviceidentifier 108 and/or the address element 110 of the first node (e.g.,the node 102 a) can be included if/when the operational status of thefirst node is provided to the task assignment system.

At step 410, a task can be delegated to the first node based on theoperational status of the first node. For example, the task assignmentelement 117 of the computing device 104 and/or the task assignmentsystem can determine a task based on the operational status of the firstnode. The computing device 104 and/or the task assignment system cantransmit a request to fulfill a task to the first node. As a specificexample, the request to fulfill a task can comprise routing one or moredata blocks. The request can be processed at the first node. In anotheraspect, the computing device 104 and/or the task assignment system canrefrain from transmitting requests to fulfill a task to the first nodein the even the first node has an operational status that isinsufficient to ensure task completion.

FIG. 5 is a flowchart illustrating an example method 500. At step 502,an operational status of a first node can be requested. For example, theoperational status can be requested at a device by sending a requestfrom the device. As an example, a load balancer can request theoperational status of the first node from the first node or anothernode. In another aspect, a task assignment system can request theoperational status of the first node. The task assignment system canrequest the operational status via the load balancer. In an aspect, theoperational status can be selected from a plurality of values, forexample, active or inactive, or available or not available.

At step 504, the operational status of the first node can be receivedfrom the first node. In an aspect, the operational status of the firstnode (e.g., the node 102 a) can be determined based on data indicativeof an operational rate (e.g., failure rate, success rate) of a secondnode. As an example, the second node can be a peer of the first node ina load balancing system. In an aspect, the data indicative of anoperational rate of the second node can comprise a rate for failing tofulfill requests, an error rate (e.g., Layer 2 error rate, Layer 3 errorrate), combinations thereof, and the like. Other operational rates canbe used according to a specific network or system. In an aspect, dataindicative of an operational rate of a second node can be accessed viaan operational history database associated with the second node. Forexample, the operational history database associated with the secondnode can store data indicative of an operational rate of a second node.

In an aspect, determining the operational status of the first node cancomprise determining a difference between the operational rate of thefirst node (e.g., the node 102 a) and the operational rate of the secondnode (e.g., the node 102 b). The operational rate of the second node canbe transmitted to the first node to facilitate the determination of theoperational status of the first node. For example, the operationalstatus can be determined based on a comparison of the difference (e.g.,difference between the operational rate of the first node and theoperational rate of the second node) to a threshold. The threshold canbe any appropriate value, such as any number between 0 and 100 (e.g.,10, 20, 30, 40, 50, 70), and/or the like. The operational status canhave a first value if the difference is less than the threshold or asecond value if the difference is greater than the threshold. The firstvalue can be opposite the second value. The first value can beindicative of availability (e.g., for processing tasks). The secondvalue can be indicative of unavailability (e.g., for processing tasks).For example, the first value can comprise a numerical value (e.g., 1), aBoolean value, (e.g., true), a text value (e.g., live, available,enabled, active), and/or the like. The second value can comprise anumerical value (e.g., 0), Boolean value (e.g., false), a text value(e.g., not live, unavailable, disabled, inactive), and/or the like. Forexample, the operational status can be selected for a device, such as aload balancer, which is configured to recognize only the first value orthe second value as an operational status.

As a specific example, the operational rate of the first node can be 90%and the operational rate of the second node can be 10%. Accordingly, thefirst node can determine that the operational status of the first nodeis inactive (e.g., second value) based on a comparison of theoperational rate of the first node (e.g., 90%) with the operational rateof the second node (e.g., 10%). In an aspect, the operational status canbe determined based on a comparison of the difference to a thresholdvalue. For example, the difference of the operational rate of the firstnode (e.g., 90% failure rate) and the operational rate (e.g., 10%failure rate) of the second node would be 80%. If the threshold value isset to be 50%, the difference would be above the threshold value. Theoperational status can indicate that the first node is not available toreceive requests. If, by contrast, the difference of the operationalrate of the first node (e.g., 30%) and the operational rate of thesecond node (e.g., 10%) is below, above, or equal to a threshold value(e.g., 50%), the operational status can indicate that the first node isavailable to receive requests if the difference is below the thresholdvalue.

In an aspect, the operational status of the first node can betransmitted from the first node to the load balancer and/or the taskassignment system. In an aspect, the device identifier 108 and/or theaddress element 110 of the first node (e.g., the node 102 a) can betransmitted if/when the operational status of the first node istransmitted from the first node to the load balancer and/or the taskassignment system.

At step 506, a request to process a task can be sent, provided,transmitted, and/or the like to the first node based on the operationalstatus of the first node. As an example, the task assignment element 117of the computing device 104 (e.g., a load balancer) and/or a taskassignment system can determine a task based on the operational statusof the first node. The task assignment system and/or the load balancercan provide a request to process the task to the first node. As aspecific example, the request to process a task can comprise routing oneor more data blocks. The request can be processed at the first node. Inanother aspect, the computing device 104 and/or the task assignmentsystem can refrain from transmitting requests to fulfill a task to thefirst node in the event the first node has an operational status that isinsufficient to ensure task completion.

In an aspect, the methods 300, 400, and 500 can be implemented in avariety of systems, such as network routing, content services, computerprocessing, and/or the like. For example, the methods 300, 400, and 500can be implemented to process a plurality of requests in a contentmanagement system. Example requests can comprise requests to encode,deliver, encrypt, edit, and/or the like various content (e.g., audio,video, text, application). The methods 300, 400, and 500 can be used toimplement a cloud computing environment, server pool, and/or the likeconfigured to provide access to various content. The nodes describedherein can comprise servers (e.g., virtual servers, content servers),routers, encoders, modulators, processing units (e.g., nodes of adistributed computing system), and/or the like.

As an illustration, the load balancing system can comprise a networkload balancer configured to route network traffic based on feedbackreceived from routers. The network load balancer can query a router todetermine if the network load balancer should continue to send trafficto the router. In an aspect, a router can determine a failure rateassociated with traffic directed through the router. In an aspect, eachrouter can forward the determined failure rate to the other peerrouters, as well as receiving the determined failure rates from theother peer routers. If a first router determines that the determinedfailure rate of the first router is unacceptable relative to the failurerate of the peer routers of the first router, then the first router candetermine that the first router is not available. In an aspect, if/whenthe network load balancer sends a query to the first router, the firstrouter can respond that the first router is not available. In an aspect,the network load balancer can ignore the first router in routing networktraffic.

In an aspect, the steps of the methods 300, 400, and 500 can beperformed by one device or multiple devices. For example, the device cancomprise the first node, second node, a third node, the load balancer,and/or the like. As another example, one or more of the steps can beperformed by a node (e.g., first node, second node, third node) or theload balancer while other steps can be performed by other nodes. In someimplementations, a node (e.g., first node, second node, third node) canact as a load balancer.

FIG. 6 is a block diagram illustrating an exemplary operatingenvironment 600 for performing the disclosed methods. In an exemplaryaspect, the methods and systems of the present disclosure can beimplemented on computer 601 as illustrated in FIG. 6 and describedbelow. By way of example, the first node 102 a and the computing device104 in FIG. 2 can be the computer 601 as illustrated in FIG. 6 .Similarly, the methods and systems disclosed can utilize one or morecomputing devices to perform one or more functions in one or morelocations. This exemplary operating environment is only an example of anoperating environment and is not intended to suggest any limitation asto the scope of use or functionality of operating environmentarchitecture. Neither should the operating environment be interpreted ashaving any dependency or requirement relating to any one or combinationof components illustrated in the exemplary operating environment.

The present methods and systems can be operational with numerous othergeneral purpose or special purpose computing system environments orconfigurations. Examples of well-known computing systems, environments,and/or configurations that can be suitable for use with the systems andmethods comprise, but are not limited to, personal computers, servercomputers, laptop devices, and multiprocessor systems. Additionalexamples comprise set top boxes, programmable consumer electronics,network PCs, minicomputers, mainframe computers, distributed computingenvironments that comprise any of the above systems or devices, and thelike.

The processing of the disclosed methods and systems can be performed bysoftware components. The disclosed systems and methods can be describedin the general context of computer-executable instructions, such asprogram modules, being executed by one or more computers or otherdevices. Generally, program modules comprise computer code, routines,programs, objects, components, data structures, etc. that performparticular tasks or implement particular abstract data types. Thedisclosed methods can also be practiced in grid-based and distributedcomputing environments where tasks are performed by remote processingdevices that are linked through a communications network. In adistributed computing environment, program modules can be located inboth local and remote computer storage media including memory storagedevices.

Further, one skilled in the art will appreciate that the systems andmethods disclosed herein can be implemented via a general-purposecomputing device in the form of a computer 601. The components of thecomputer 601 can comprise, but are not limited to, one or moreprocessors 603, a system memory 612, and a system bus 613 that couplesvarious system components including one or more processors 603 to thesystem memory 612. In an aspect, the system can utilize parallelcomputing.

The system bus 613 represents one or more of several possible types ofbus structures, including a memory bus or memory controller, aperipheral bus, an accelerated graphics port, and a processor or localbus using any of a variety of bus architectures. By way of example, sucharchitectures can comprise an Industry Standard Architecture (ISA) bus,a Micro Channel Architecture (MCA) bus, an Enhanced ISA (EISA) bus, aVideo Electronics Standards Association (VESA) local bus, an AcceleratedGraphics Port (AGP) bus, and a Peripheral Component Interconnects (PCI),a PCI-Express bus, a Personal Computer Memory Card Industry Association(PCMCIA), Universal Serial Bus (USB) and the like. The system bus 613,and all buses specified in this description can also be implemented overa wired or wireless network connection and each of the subsystems,including the one or more processors 603, a mass storage device 604, anoperating system 605, status determination software 606, operation data607, a network adapter 608, the system memory 612, an Input/OutputInterface 610, a display adapter 609, a display device 611, and a humanmachine interface 602, can be contained within one or more remotecomputing devices 614 a,b,c at physically separate locations, connectedthrough buses of this form, in effect implementing a fully distributedsystem.

The computer 601 typically comprises a variety of computer readablemedia. Exemplary readable media can be any available media that isaccessible by the computer 601 and comprises, for example and not meantto be limiting, both volatile and non-volatile media, removable andnon-removable media. The system memory 612 comprises computer readablemedia in the form of volatile memory, such as random access memory(RAM), and/or non-volatile memory, such as read only memory (ROM). Thesystem memory 612 typically contains data, such as the operation data607, and/or program modules, such as the operating system 605 and thestatus determination software 606, that are immediately accessible toand/or are presently operated on by the one or more processors 603.

In another aspect, the computer 601 can also comprise otherremovable/non-removable, volatile/non-volatile computer storage media.By way of example, FIG. 6 illustrates a mass storage device 604 whichcan provide non-volatile storage of computer code, computer readableinstructions, data structures, program modules, and other data for thecomputer 601. For example and not meant to be limiting, the mass storagedevice 604 can be a hard disk, a removable magnetic disk, a removableoptical disk, magnetic cassettes or other magnetic storage devices,flash memory cards, CD-ROM, digital versatile disks (DVD) or otheroptical storage, random access memories (RAM), read only memories (ROM),electrically erasable programmable read-only memory (EEPROM), and thelike.

Optionally, any number of program modules can be stored on the massstorage device 604, including by way of example, the operating system605 and the status determination software 606. Each of the operatingsystem 605 and the status determination software 606 (or somecombination thereof) can comprise elements of the programming and thestatus determination software 606. The operation data 607 can also bestored on the mass storage device 604. The operation data 607 can bestored in any of one or more databases known in the art. Examples ofsuch databases comprise, DB2®, Microsoft® Access, Microsoft® SQL Server,Oracle®, mySQL, PostgreSQL, and the like. The databases can becentralized or distributed across multiple systems.

In another aspect, the user can enter commands and information into thecomputer 601 via an input device (not shown). Examples of such inputdevices comprise, but are not limited to, a keyboard, pointing device(e.g., a “mouse”), a microphone, a joystick, a scanner, tactile inputdevices, such as gloves, and other body coverings, and the like. Theseand other input devices can be connected to the one or more processors603 via a human machine interface 602 that is coupled to the system bus613, but can be connected by other interface and bus structures, such asa parallel port, game port, an IEEE 1394 Port (also known as a Firewireport), a serial port, or a universal serial bus (USB).

In yet another aspect, a display device 611 can also be connected to thesystem bus 613 via an interface, such as a display adapter 609. It iscontemplated that the computer 601 can have more than one displayadapter 609 and the computer 601 can have more than one display device611. For example, a display device can be a monitor, an LCD (LiquidCrystal Display), or a projector. In addition to the display device 611,other output peripheral devices can comprise components, such asspeakers (not shown) and a printer (not shown), which can be connectedto the computer 601 via the Input/Output Interface 610. Any step and/orresult of the methods can be output in any form to an output device.Such output can be any form of visual representation, including, but notlimited to, textual, graphical, animation, audio, tactile, and the like.The display device 611 and the computer 601 can be part of one device,or separate devices.

The computer 601 can operate in a networked environment using logicalconnections to the one or more remote computing devices 614 a,b,c. Byway of example, a remote computing device can be a personal computer,portable computer, smartphone, a server, a router, a network computer, apeer device or other common network node, and so on. Logical connectionsbetween the computer 601 and the remote computing device 614 a,b,c canbe made via a network 615, such as a local area network (LAN) and/or ageneral wide area network (WAN). Such network connections can be throughthe network adapter 608. The network adapter 608 can be implemented inboth wired and wireless environments. Such networking environments areconventional and commonplace in dwellings, offices, enterprise-widecomputer networks, intranets, and the Internet.

For purposes of illustration, application programs and other executableprogram components, such as the operating system 605 are illustratedherein as discrete blocks, although it is recognized that such programsand components reside at various times in different storage componentsof the computer 601, and are executed by the data processor(s) of thecomputer. An implementation of the status determination software 606 canbe stored on or transmitted across some form of computer readable media.Any of the disclosed methods can be performed by computer readableinstructions embodied on computer readable media. Computer readablemedia can be any available media that can be accessed by a computer. Byway of example and not meant to be limiting, computer readable media cancomprise “computer storage media” and “communications media.” “Computerstorage media” comprise volatile and non-volatile, removable andnon-removable media implemented in any methods or technology for storageof information, such as computer readable instructions, data structures,program modules, or other data. Exemplary computer storage mediacomprises, but is not limited to, RAM, ROM, EEPROM, flash memory orother memory technology, CD-ROM, digital versatile disks (DVD) or otheroptical storage, magnetic cassettes, magnetic tape, magnetic diskstorage or other magnetic storage devices, or any other medium which canbe used to store the desired information and which can be accessed by acomputer.

While the methods and systems have been described in connection withpreferred embodiments and specific examples, it is not intended that thescope be limited to the particular embodiments set forth, as theembodiments herein are intended in all respects to be illustrativerather than restrictive.

Unless otherwise expressly stated, it is in no way intended that anymethod set forth herein be construed as requiring that its steps beperformed in a specific order. Accordingly, where a method claim doesnot actually recite an order to be followed by its steps or it is nototherwise specifically stated in the claims or descriptions that thesteps are to be limited to a specific order, it is no way intended thatan order be inferred, in any respect. This holds for any possiblenon-express basis for interpretation, including: matters of logic withrespect to arrangement of steps or operational flow; plain meaningderived from grammatical organization or punctuation; the number or typeof embodiments described in the specification.

It will be apparent to those skilled in the art that variousmodifications and variations can be made without departing from thescope or spirit. Other embodiments will be apparent to those skilled inthe art from consideration of the specification and practice disclosedherein. It is intended that the specification and examples be consideredas exemplary only, with a true scope and spirit being indicated by thefollowing claims.

The invention claimed is:
 1. A method comprising: determining, based ona first network device of a plurality of network devices and a secondnetwork device of the plurality of network devices, operational data;determining, based on the operational data, an operational status of thesecond network device of the plurality of network devices relative tothe first network device of the plurality of network devices;determining, based on the operational status and based on a failure rateof the second network device, that the second network device is toprocess at least one computing task; and causing the second networkdevice to process the at least one computing task.
 2. The method ofclaim 1, further comprising: determining, based on the failure rate ofthe second network device and a failure rate of the first networkdevice, a failure status of the second network device of the pluralityof network devices relative to the first network device of the pluralityof network devices, wherein determining that the second network deviceis to process the at least one computing task is further based on thefailure status.
 3. The method of claim 1, wherein the failure rate ofthe second network device is based on at least one of a rate of failingto fulfill requests, an error rate, or a rate of failed operations. 4.The method of claim 1, wherein the failure rate of the second netwrokdevice is based on a ratio of failed requests with respect to fulfilledrequests.
 5. The method of claim 1, wherein the failure rate of thesecond network device indicates an availability of the second networkdevice when the failure rate does not satisfy a threshold.
 6. The methodof claim 1, wherein the failure rate of the second network is based on acompletion of one or more computing tasks associated with the at leastone computing task.
 7. The method of claim 1, wherein the second networkdevice comprises the first network device, and wherein causing thesecond network device to process the at least one computing taskcomprises: causing, by the first network device, the at least onecomputing task to be processed.
 8. A non-transitory computer readablemedium storing processor-executable instructions that, when executed bya first network device of a plurality of network devices, cause thefirst network device to: determine, based on a failure rate of a secondnetwork device of the plurality of network devices, operational dataassociated with the plurality of network devices; determine, based onthe operational data, an operational status of the second network deviceof the plurality of network devices relative to the first network deviceof the plurality of network devices; determine, based on the relativeoperational status of based on the failure rate of the second networkdevice, that the second network device is to process at least onecomputing task; and cause the second network device to process the atleast one computing task.
 9. The non-transitory computer readable mediumof claim 8, wherein the processor-executable instructions further causethe first network device to: determine, based on the failure rate of thesecond network device and a failure rate of the first network device, afailure status of the second network device of the plurality of networkdevices relative to the first network device of the plurality of networkdevices, wherein determining that the second network device is toprocess the at least one computing task is further based on the failurestatus.
 10. The non-transitory computer readable medium of claim 8,wherein the failure rate of the second network device is based on atleast one of a rate of failing to fulfill requests, an error rate, or arate of failed operations.
 11. The non-transitory computer readablemedium of claim 8, wherein the failure rate of the second network deviceis based on a ration of failed requests with respect to fulfilled. 12.The non-transitory computer readable medium of claim 8, wherein thefailure rate of the second network device indicates an availability ofthe second network device when the failure rate does not satisfy athreshold.
 13. The non-transitory computer readable medium of claim 8,wherein the failure rate of the second network device is based on acompletion of one or more computing tasks associated with the at leastone computing task.
 14. The non-transitory computer readable medium ofclaim 8, wherein the second network device comprises the first networkdevice, and wherein the processor-executable instructions that cause thefirst network device to cause the second network device to process theat least one computing task further cause the first network device to:cause, by the first network device, the at least one computing task tobe processed.
 15. An apparatus, comprising: one or more processors; anda memory storing processor-executable instructions that, when executedby the one or more processors, cause the apparatus to: determine, basedon a first network device of a plurality of network devices, operationaldata associated with the plurality of network devices, wherein theplurality of network devices comprises the apparatus; determine, basedon the operational data, an operational status of the first networkdevice of the plurality of network devices relative to the apparatus;determine, based on the operational status and based on a failure rateof the first network device, that the first network device is to processat least one computing task; and cause the first network device toprocess the at least one computing task.
 16. The apparatus of claim 15,wherein the processor-executable instructions further cause theapparatus to: determine, based on a failure rate of the apparatus andthe failure rate of the first network device, a failure status of thefirst network device of the plurality of network devices relative to theapparatus, wherein determining that the first network device is toprocess the at least one computing task is further based on the failurestatus.
 17. The apparatus of claim 15, wherein the failure rate of thefirst network device is based on at least one of a rate of failing tofulfill requests, an error rate, or a rate of failed operations.
 18. Theapparatus of claim 15, wherein the failure rate is based on a ratio offailed requests with respect to fulfilled requests.
 19. The apparatus ofclaim 15, wherein the failure rate of the first network device indicatesan availability of the first network device when the failure rate doesnot satisfy a threshold.
 20. The apparatus of claim 15, wherein thefailure rate of the first network device is based on a completion of oneor more computing tasks associated with the at least one computing task.